using System;
using System.Collections.Generic;
using System.Text;

namespace Skywave.Windows.Forms
{
    [Serializable()]
    public class SheetPrintSettings: ICloneable
    {
        private System.Drawing.Graphics mGraphics = null;
        public System.Drawing.Graphics Graphics
        {
            get { return mGraphics; }
            set { mGraphics = value; }
        }

        private System.Drawing.Rectangle mBounds;
        public System.Drawing.Rectangle Bounds
        {
            get { return mBounds; }
            set { mBounds = value; }
        }

        private bool mScaleToFitHorizontally = false;
        public bool ScaleToFitHorizontally
        {
            get { return mScaleToFitHorizontally; }
            set { mScaleToFitHorizontally = value; }
        }

        private bool mScaleToFitVertically = false;
        public bool ScaleToFitVertically
        {
            get { return mScaleToFitVertically; }
            set { mScaleToFitVertically = value; }
        }

        private bool mKeepAspectRatio = true;
        public bool KeepAspectRatio
        {
            get { return mKeepAspectRatio; }
            set { mKeepAspectRatio = value; }
        }

        private bool mAutoPage = false;
        public bool AutoPage
        {
            get { return mAutoPage; }
            set { mAutoPage = value; }
        }

        private SheetPagingDirections mPagingDirection = SheetPagingDirections.HorizontalPriority;
        public SheetPagingDirections PagingDirection
        {
            get { return mPagingDirection; }
            set { mPagingDirection = value; }
        }

        private int mCurrentPage = 1;
        public int CurrentPage
        {
            get { return mCurrentPage; }
            set { mCurrentPage = value; }
        }

        private bool mHasMorePages = false;
        public bool HasMorePages
        {
            get { return mHasMorePages; }
            internal set { mHasMorePages = value; }
        }

        private bool mCenterInBoundsHorizontally = false;
        public bool CenterInBoundsHorizontally
        {
            get { return mCenterInBoundsHorizontally; }
            set { mCenterInBoundsHorizontally = value; }
        }

        private bool mCenterInBoundsVertically = false;
        public bool CenterInBoundsVertically
        {
            get { return mCenterInBoundsVertically; }
            set { mCenterInBoundsVertically = value; }
        }

        #region ICloneable Members

        public object Clone()
        {
            SheetPrintSettings copy = new SheetPrintSettings();
            copy.AutoPage = AutoPage;
            copy.Bounds = Bounds;
            copy.CenterInBoundsHorizontally = CenterInBoundsHorizontally;
            copy.CenterInBoundsVertically = CenterInBoundsVertically;
            copy.CurrentPage = CurrentPage;
            copy.Graphics = Graphics;
            copy.HasMorePages = HasMorePages;
            copy.KeepAspectRatio = KeepAspectRatio;
            copy.PagingDirection = PagingDirection;
            copy.ScaleToFitHorizontally = ScaleToFitHorizontally;
            copy.ScaleToFitVertically = ScaleToFitVertically;
            return copy;
        }

        #endregion
    }
}
